//
//  Plane.m
//  BeatPlane
//
//  Created by LZXuan on 15-5-6.
//  Copyright (c) 2015年 轩哥. All rights reserved.
//

#import "Plane.h"
#import <AVFoundation/AVFoundation.h>

#define kScreenSize [UIScreen mainScreen].bounds.size
#define kPlaneSpeed 5

@implementation Plane
{
    AVAudioPlayer *_player;//音乐播放
}

//单例函数
//下面的函数 不管调用多少次 只会创建有且只有一个对象
+ (instancetype)defaultPlane {
    static Plane *plane = nil;
    @synchronized(self) {//同步操作 考虑线程安全
        if (plane == nil) {
            plane = [[self alloc] init];
        }
    }
    return plane;
}

//单例不释放

- (instancetype)init {
    if (self = [super init]) {
        //一旦 创建之后 飞机就应该有图片 和 位置大小
        self.image = [UIImage imageNamed:@"plane.png"];
        self.frame = CGRectMake(kScreenSize.width/2-50/2, kScreenSize.height-50-50, 50, 50);
        _towards = kStop;//停止
        //初始化的飞机就有 播放音乐的功能
        [self fireMusic];
    }
    return self;
}

//准备左移 (提供给按钮来改变方向的)
- (void)startMoveLeft {
    //改变向左的方向
    _towards = kLeft;
}
//真正的左移
- (void)moveLeft {
    //先获取 当前frame
    CGRect frame = self.frame;
    if (frame.origin.x > 0) {
        frame.origin.x -= kPlaneSpeed;
    }
    //赋给self.frame
    self.frame = frame;
}


//准备右移
- (void)startMoveRight {
    _towards = kRight;
}

//真正的右移
- (void)moveRight {
    //先获取 当前frame
    CGRect frame = self.frame;
    if (frame.origin.x < kScreenSize.width-self.frame.size.width) {
        frame.origin.x += kPlaneSpeed;//右移
    }
    //赋给self.frame
    self.frame = frame;
}



//停止
- (void)stopMoveing {
    _towards = kStop;
}

//飞机的移动行为
//下面的方法是提供给定时器 来调用的
//定时器 每隔一段时间可以让飞机执行一次planeAction控制飞机的移动

//根据飞机的方向 来决定 左移还是右移
- (void)planeAction {
    switch (_towards) {
        case kLeft:
            [self moveLeft];
            break;
        case kRight:
            [self moveRight];
            break;
        default:
            break;
    }
}


#pragma mark - 声音
//创建声音
- (void)fireMusic {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"bullet" ofType:@"mp3"];
    _player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil];
    //准备播放
    [_player prepareToPlay];
    //播放次数
    _player.numberOfLoops = -1;
    
}

/**
 *  开始播放声音
 */
- (void)startPlaying  {
    [_player play];
}
/**
 *  停止播放
 */
- (void)stopPlaying {
    [_player stop];
}


@end



